package cn.lili.modules.promotion.service;

import cn.lili.common.vo.PageVO;
import cn.lili.modules.promotion.entity.dos.GreenProject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.util.Map;

public interface GreenProjectService extends IService<GreenProject> {

    /**
     * 分页查询绿色公益项目
     * @param greenProject
     * @param pageVO
     * @return
     */
    Page<GreenProject> getByPage (GreenProject greenProject, PageVO pageVO);

    /**
     * 添加绿色公益项目
     * @param greenProject
     */
    void addProject (GreenProject greenProject);

    /**
     * 编辑绿色公益项目
     * @param greenProject
     */
    void editProject (GreenProject greenProject);

    /**
     * 编辑项目状态
     * @param id
     * @param status
     */
    void updateStatus (String id, String status);

    /**
     * 获取最新公益项目
     * @return
     */
    GreenProject getByLast ();

    /**
     * 获取绿色公益账户余额
     * @return
     */
    BigDecimal getBalance();

    /**
     * 分页获取公益捐赠项目
     * @param pageVO
     * @return
     */
    Map<String, Object> getPageByAll (PageVO pageVO);

    /**
     * 根据map的key排序
     *
     * @param map 待排序的map
     * @param isDesc 是否降序，true：降序，false：升序
     * @return 排序好的map
     */
    <K extends Comparable<? super K>, V> Map<K, V> sortByKey(Map<K, V> map, boolean isDesc);

    void updateGreenProjectStatus();
}
